#ifndef DATAMAINTENANCE_H
#define DATAMAINTENANCE_H

#include <QObject>
#include <QTimer>
#include "dbmanager.h"

/**
 * @brief 数据维护管理器
 *
 * 功能：
 * - 定时清理过期历史数据
 * - 定时清理过期报警记录
 * - 数据库优化
 */
class DataMaintenance : public QObject
{
    Q_OBJECT

public:
    explicit DataMaintenance(DBManager *dbManager, QObject *parent = nullptr);
    ~DataMaintenance();

    /**
     * @brief 启动自动维护
     * @param checkIntervalHours 检查间隔（小时），默认24小时
     */
    void startAutoMaintenance(int checkIntervalHours = 24);

    /**
     * @brief 停止自动维护
     */
    void stopAutoMaintenance();

    /**
     * @brief 设置历史数据保留天数
     * @param days 保留天数，默认90天
     */
    void setHistoryRetentionDays(int days) { m_historyRetentionDays = days; }

    /**
     * @brief 设置报警记录保留天数
     * @param days 保留天数，默认180天
     */
    void setAlarmRetentionDays(int days) { m_alarmRetentionDays = days; }

    /**
     * @brief 获取历史数据保留天数
     */
    int historyRetentionDays() const { return m_historyRetentionDays; }

    /**
     * @brief 获取报警记录保留天数
     */
    int alarmRetentionDays() const { return m_alarmRetentionDays; }

    /**
     * @brief 手动执行维护（立即执行）
     */
    void performMaintenance();

signals:
    /**
     * @brief 维护完成信号
     * @param deletedHistoryCount 删除的历史数据条数
     * @param deletedAlarmCount 删除的报警记录条数
     */
    void maintenanceCompleted(int deletedHistoryCount, int deletedAlarmCount);

private slots:
    /**
     * @brief 执行定时维护
     */
    void onTimedMaintenance();

private:
    DBManager *m_dbManager;     ///< 数据库管理器
    QTimer *m_maintenanceTimer; ///< 维护定时器
    int m_historyRetentionDays; ///< 历史数据保留天数
    int m_alarmRetentionDays;   ///< 报警记录保留天数
};

#endif // DATAMAINTENANCE_H
